Spire.PDF 是一款专业的基于.NET 平台的 PDF 组件。它能够让开发人员在不使用 Adobe Acrobat 和其他外部控件的情况下,运用.NET 应用程序创建,阅读,编写和操纵 PDF 文档。文本将详细为大家介绍 Spire.PDF 中坐标体系及其应用。
坐标系定义
坐标系是 PDF 中一项十分重要的体系,PDF 的中任何元素,例如文本、图片、表格等,都必须建立在坐标体系上。有了坐标系,我们才能在指定的位置添加(绘制)这些内容。Adobe 公司的 PDF 文档规范中将坐标系的原点定在了页面的左下角,这样的坐标系其实不方便我们自上而下书写内容。Spire.PDF 的坐标系有如下规定:
- 原点位于 PDF 页面的左上角定点
- X 正半轴是原点开始向右延伸的轴,Y 正半轴是原点开始向下延伸的轴
- 以磅作为单位,如果 PDF 页面大小为 A4,那么页面右下角定点坐标为(595,842)
从以上规定中,我们很容易看出,Spire.PDF 中的坐标体系很方便程序员自上而下在 PDF 页面上添加页面元素。除了以上设定以外,Spire.PDF 的新建 PDF 页面内还有边缘(PdfMargins)的设定,边缘是为了方便程序员在除边缘以外的地方添加内容,这跟 Word 中的边缘设定比较类似。由于边缘的出现,在新建页面中,坐标原点的位置是除边缘以外的区域的左上角定点。这样的设定,方便程序员在 PDF 页面上添加内容时不再需要人为地留出空白。
上面一直强调新建页面,在现成的 PDF 页面中是没有边缘的概念的。实际上,Adobe PDF 文档规范也没有边缘的概念。对于一个现成的 PDF 页面,坐标系维持原先的规定不变。现在对新建页面中的坐标体系做出总结:
- 新建页面中,坐标系原点开始于除边缘外的左上角定点
- 边缘区域内有坐标,但是边缘区域不能显示任何内容
- 如果想在边缘区域绘制内容,在创建页面时必须将边缘设置为 0,此时坐标系原点回到页面左上角定点
坐标系转换
在 PDF 中添加内容时,为了让内容呈现某种的效果,例如将文字和图片旋转一定角度,我们需要借助坐标系转换来是实现这些效果。Spire.PDF 中坐标系转换包括下如图 3 所示的四种方式,它们对应的方法分别是 TranslateTrsanform, ScaleTransform, RotateTransform 和 SkewTransform。下面举例说明它们的用法:
TranslateTransform (5,5) 表示坐标系向右、向下分别平移 5 个单位
ScaleTransform (2,2) 表示 X、Y 轴上的单位长度放大 2 倍
RotateTansform (-45) 表示坐标系逆时针旋转 45 度
SkewTransform (10,10) 表示 X 轴向下倾斜 10 度,Y 轴向右倾斜 10 度
坐标系的应用
1. 在指定位置绘制文本、图片等
整个 PDF 页面实际上一块大的画布,我们需要通过 Canvas.DrawString 方法和 Canvas.DrawImage 方法绘制文本和图片,参考代码如下:
//创建PdfDocument对象 |
2. 获取文字、图片坐标
有了坐标体系,我们也可以获取现有 PDF 文档中文字或图片的位置(X,Y 坐标),代码参考如下:
//创建PdfDocument对象 |
3. 利用坐标系转换创建居中呈 45 度的文字效果
这里我们将借助坐标的转换方法,在一个文档正中间添加一行斜向上的文字,形成一种 “水印文字” 的感觉。代码中涉及到了一些坐标平移的位置计算,这里不做太详细的介绍。
//创建PdfDocument对象 |
效果: